﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.IO;
using SES.CMS.DO;
using SES.CMS.BL;
using System.Data;
using System.Text;


namespace SES.CMS.AdminCP.PageUC
{
    public partial class ucProductCateUpload : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string FileName = "productCate_upload.xlsx";
            string SaveLocation = string.Format("{0}\\{1}", Server.MapPath("~/Media/"), FileName);
            if (File.Exists(SaveLocation))
            {
                File.Delete(SaveLocation);
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            //Xâu Kiểm tra xem có đúng là file excel không...   
            string exelContentType = "application/vnd.ms-excel";
            string exel2010ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            // Tên file
            string FileName = "productCate_upload.xlsx";
            // Có file không?
            if (!fuProduct.HasFile)
            {
                lblError.Text = "Vui lòng chọn file";
            }
            else
            {
                try
                {
                    // Kiểm tra định dạng file excel???
                    if (fuProduct.PostedFile.ContentType != exelContentType && fuProduct.PostedFile.ContentType != exel2010ContentType)
                    {
                        lblError.Text = "Vui lòng chọn tệp tin excel!";
                    }
                    else
                    {
                        // Lưu file
                        string SaveLocation = string.Format("{0}\\{1}", Server.MapPath("~/Admincp/xlsfile/"), FileName);
                        if (File.Exists(SaveLocation))
                        {
                            File.Delete(SaveLocation);
                        }
                        fuProduct.SaveAs(SaveLocation);
                        lblError.Text = "Tải lên thành công";
                        // Mở kết nối tới file excel
                        string excelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0", SaveLocation);
                        OleDbConnection connection = new OleDbConnection();
                        connection.ConnectionString = excelConnectionString;
                        // Câu lệnh lấy các dòng dữ liệu từ [Sheet1], muốn lấy từ sheet2 thì thay thế "Sheet1$" => "Sheet2$"
                        string sqlString = string.Format("SELECT [MaLoaiSanPham],[TenLoaiSanPham],[MaDanhMucCha],[MoTa],[SoThuTu] FROM [{0}]", "Sheet1$");
                        OleDbCommand command = new OleDbCommand(sqlString, connection);
                        connection.Open();
                        // Các hàm gọi dữ liệu
                        OleDbDataReader odr = command.ExecuteReader();
                        cmsLoaiSanPhamDO objLoaiSanPham = new cmsLoaiSanPhamDO();
                        cmsLoaiSanPhamBL loaiSanPhamBL = new cmsLoaiSanPhamBL();
                        // Đọc cho tới hết
                        while (odr.Read())
                        {
                            objLoaiSanPham.MaLoaiSanPham = validToString(odr,0);
                            objLoaiSanPham.TenLoaiSanPham = validToString(odr, 1);
                            objLoaiSanPham.ParentID = loaiSanPhamBL.SelectByMaLoaiSanPham(new cmsLoaiSanPhamDO { MaLoaiSanPham = validToString(odr, 2) }).LoaiSanPhamID;
                            objLoaiSanPham.MoTa = validToString(odr, 3);
                            objLoaiSanPham.OrderID = validToInt(odr, 4);
                            loaiSanPhamBL.InsertOrUpdate(objLoaiSanPham);
                        }
                        connection.Close();
                        File.Delete(SaveLocation);

                        Functions.Alert("Dữ liệu đã được đưa lên thành công!", "Default.aspx?Page=ListProductCategory");
                    }
                }
                catch
                {
                    lblError.Text = "Có lỗi xảy ra trong quá trình import dữ liệu! Vui lòng thực hiện lại!";
                }

            }
        }
        protected string validToString(OleDbDataReader myreader, int stval)//if any columns are 
        //found null then they are replaced by zero
        {
            object val = myreader[stval];
            if (val != DBNull.Value)
                return val.ToString();
            else
                return "";
        }
        protected int validToInt(OleDbDataReader myreader, int stval)//if any columns are 
        //found null then they are replaced by zero
        {
            object val = myreader[stval];
            if (val != DBNull.Value)
            {
                int number;
                bool isNumber = int.TryParse(val.ToString(), out number);
                if (isNumber)
                {
                    return number;
                }
                else
                    return 0;
            }
            else
                return 0;
        }
    }
}